package file;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;

/**
 * Creared with IntelliJ IDEA.
 * Description:
 * User:yxd
 * Date:2022-04-08
 * Time:14:29
 */
public class Demo8 {
    public static void main(String[] args) {
        InputStream inputStream = null;//Java里面提供了一个语法,try with
        try {//创建对象,也是打开文件,有可能没有文件,因此需要抛异常
            inputStream = new FileInputStream("E:/NEW/test.txt");//需要指定路径,可以是相对路径也可以是绝对路径,也可以是File对象
            //尝试一个一个字节的读,把整个文件读完
            while(true){
                int x = inputStream.read();//有三个版本的重载,无参数版本一次读一个,返回值为int,不是byte(-128~127,这个后面无法判断是否读完了所有字节),返回值的范围是-1~255,这里的-1就表示已经读完了所有字节,字节流结束了
                // 一个参数版,一次读若干个字节把读的结果仿造参数中指定的数组中去,返回的就是读到的字节数
                //三个参数版本,一次读若干个字节把读的结果仿造参数中指定的数组中去,返回的就是读到的字节数,不是从起始位置读起,而是从中间位置读起,最后一个表示能放多少个元素
                if(x == -1){
                    break;//表示读完了所有的字节
                }
                System.out.println(x);//打印
            }

        } catch (IOException e) {//这个包含了FileNotFoundException(子类),因此可以合并,IO操作失败的可能性是非常大的
            e.printStackTrace();
        }finally {
            //读完之后需要关闭文件,释放资源
            try {
                inputStream.close();//这个放在finally里面更好有需要把定义放到外面去
            } catch (IOException e) {
                e.printStackTrace();
            }
        }

    }
}
